<?php 

class GoodsFormModel extends Model{
	//商品类型ID
	private $gtid;
	public $table ='goods_type';
	public function __init() {
		$this -> gtid = Q('gtid', 0, 'intval');
	}
	//获取表单
	public function get() {
		//修改时会有商品gid,根据gid把原来的数据读出
		if($gid = isset($_POST['gid'])?$_POST['gid']:null){
			$oldData = M('goods_attr_list')->where("gid={$gid}")->getField('avid,attr_name');
		}else{
			$oldData=null;
		}
		// p($oldData);exit;
		$map['gtid']=$this->gtid;
		$map['spec']=0;
		$attrData = M('goods_attr') -> where($map) -> all();
		foreach ($attrData as $n => $attr) {
			$map['attr_aid'] = $attr['aid'];
			//查出当前属性的所有属性值
			$attrValue = M('goods_attr_value') -> where($map) -> all();
			// p($attrValue);die;
			//根据显示方式不同，运行不同的方法，生成不同的表单
			$func = '_'.$attr['show_type'];
			$attrData[$n]['html'] = $this -> $func($attr, $attrValue,$oldData);
		}
		return $attrData;
	}
	public function getSpec(){
		$oldData=array();
		if ($gid=Q('gid',0,'intval')) {
			$stock=M('stock')->where('gid='.$gid)->all();
			// p($stock);
			foreach ($stock as $sid => $sv) {
				$spec=M('stock_attr')->where('sid='.$sv['sid'])->all();
				foreach ($spec as $k => $v) {
					$stock[$sid]['avid'][$v['avid']]=$v['avid'];
				}
			}
			$oldData=$stock;
			// p($stock);die;
		}else{
			$oldData=array();
		}
		$map['gtid']=$this->gtid;
		$map['spec']=1;
		$specData = M('goods_attr') -> where($map) -> all();
		// p($specData);die;
		foreach ($specData as $n => $spec) {
			$map['attr_aid'] = $spec['aid'];
			//查出当前属性的所有属性值
			$specValue[] = M('goods_attr_value') -> where($map) -> all();
			// p($specValue);
			$specdata[]=$spec;	
		}
		// p($specdata);die;
		$specData['html'][] = $this -> selectSpec($specdata, $specValue,$oldData);
		// p($specData);die;
		return $specData;
	}
	//规格属性的下拉列表处理
	public function selectSpec($attr, $attrValue,$oldData) {
		//写出默认表结构
		$html='<tr>';
		$selected='';
		$priceValue='';
		$stockValue='';
		$snValue='';
		//循环判断，如果是编辑操作，对原有值加selected属性
		if($oldData){
			foreach ($oldData as $k=> $oldv) {
				$priceValue='value="'.$oldv['price'].'"';
				$stockValue='value="'.$oldv['stock'].'"';
				$snValue='value="'.$oldv['sn'].'"';
				foreach ($attrValue as $key => $value) {
				$html.= "<td>";	
				$html.='<select name="spec[select][select-'.$attr[$key]['aid'].'][]">';
					foreach ($value as $v) {
						if (isset($oldv['avid'][$v['avid']])) {
							$selected=' selected="" ';
						}else{
							$selected='';
						}
						$html .= "<option $selected value='{$v['avid']}-{$v['av_value']}'>{$v['av_value']}</option>";
					}
				$html.="</select></td>";
				}
				$html .= "<td><input $priceValue type='text' name='spec[price][]' class='w100'/></td><td><input $stockValue type='text' name='spec[stock][]' class='w100'/></td><td><input type='text' $snValue name='spec[sn][]' class='w100'/></td><td><button type='button' class='hd-cancel addStockForm' >添加</button></td><td><button type='button' class='hd-cancel delStockForm' >移除</button></td></tr>";
			}
		}else{
			$html='';
			
			//循环判断，如果是编辑操作，对原有值加selected属性
			foreach ($attrValue as $id=> $value) {
				$html.='<td><select name="spec[select][select-'.$attr[$id]['aid'].'][]">';
				//组成完整的表单结构，name属性采取“表单类型-属性名称id”形式形成，确保name属性的独特
				foreach ($value as $key => $v) {
					$html .= "<option $selected value='{$v["avid"]}-{$v["av_value"]}'>{$v['av_value']}</option>";
				}
				$html .= "</select></td>";
			}
			$html.="<td><input $priceValue type='text' name='spec[price][]' class='w100'/></td><td><input $stockValue type='text' name='spec[stock][]' class='w100'/></td><td><input type='text' $snValue name='spec[sn][]' class='w100'/></td><td><button type='button' class='hd-cancel addStockForm' >添加</button></td>";	
		}
		return $html;
	}
	//单选框处理
	public function _radio($attr, $attrValue,$oldData) {
		//写出默认表结构
		$html = '<tr>';
		$html .= "<th>{$attr['attr_name']}</th><td>";
		//循环判断，如果是编辑操作，对原有值加checked属性
		foreach ($attrValue as $v) {
			if($oldData && isset($oldData[$v['avid']])){
				$checked=' checked="" ';
			}else{
				$checked='';
			}
			//组成完整的表单结构，name属性采取“表单类型-属性名称id”形式形成，确保name属性的独特
			$html .= "<input $checked type='radio' name='attr[radio-{$attr['aid']}]' value='{$v['avid']}-{$v['av_value']}'/> {$v['av_value']}";
		}
		return $html . '</td></tr>';
	}

	//复选框处理
	public function _checkbox($attr, $attrValue,$oldData) {
		//写出默认表结构
		$html = '<tr>';
		$html .= "<th>{$attr['attr_name']}</th><td>";
		//循环判断，如果是编辑操作，对原有值加checked属性
		foreach ($attrValue as $v) {
			if($oldData && isset($oldData[$v['avid']])){
				$checked=' checked="" ';
			}else{
				$checked='';
			}
			//组成完整的表单结构，name属性采取“表单类型-属性名称id-属性值id”形式形成，确保name属性的独特
			$html .= "<input $checked type='checkbox' name='attr[checkbox-{$attr['aid']}-{$v['avid']}]' value='{$v['avid']}-{$v['av_value']}'/> {$v['av_value']}";
		}
		return $html . '</td></tr>';
	}

	//文本框处理
	public function _text($attr, $attrValue,$oldData) {
//		p($oldData);
//		p($attrValue);
		//因为text类型只能有一个值
		$avid= $attrValue[0]['avid'];
		$av_value = $oldData?$oldData[$avid]:$attrValue[0]['av_value'];
		$html = '<tr>';
		$html .= "<th>{$attr['attr_name']}</th><td>";
		$html .= "<input type='text' name='attr[text-{$attr['aid']}-{$avid}]' value='{$av_value}'/>";
		return $html . '</td></tr>';
	}
	//下拉列表处理
	public function _select($attr, $attrValue,$oldData) {
		//写出默认表结构
		$html = '<tr>';
		$html .= "<th>{$attr['attr_name']}</th><td>";
		$html.='<select name="attr[select-'.$attr['aid'].']">';
		//循环判断，如果是编辑操作，对原有值加selected属性
		foreach ($attrValue as $v) {
			if($oldData && isset($oldData[$v['avid']])){
				$selected=' selected="" ';
			}else{
				$selected='';
			}
			//组成完整的表单结构，name属性采取“表单类型-属性名称id”形式形成，确保name属性的独特
			$html .= "<option $selected value='{$v['avid']}-{$v['av_value']}'>{$v['av_value']}</option>";
		}
		return $html . '</select></td></tr>';
	}
	
}

 ?>